package kioscodeal


class Pedido {

	User cliente
	EstadoPedido estadoPedido = EstadoPedido.PENDIENTE
	CalificacionPedido calificacionPedido = CalificacionPedido.SIN_CALIFICACION
	Date fechaCreacion
	Date fechaDespacho
	static hasMany = [productoPedidos:ProductoPedido]
	Double importeTotal = 0
	Double distanciaComercioCliente
	Coordenada coord
	Coordenada origen
	Descuento descuento
	String comentario
	
	Pedido(){
		
	}
	
	static transients = ['importeTotal']
	
    static constraints = {
		cliente nullable:false
		estadoPedido nullable:false
		calificacionPedido nullable:false
		productoPedidos nullable:false
		importeTotal scale:2,min:0D
		distanciaComercioCliente scale:2,min:0D
		coord blank:true,nullable:true
		fechaDespacho blank:true,nullable:true
		descuento blank:true,nullable:true
		comentario blank:true,nullable:true,size:0..256
    }
	
	ProductoPedido getProductoPedidos(Producto prod){
		return this.productoPedidos.find { it.producto == prod }
	}

	public Double getImporteTotal() {
		double acumulado = 0

		this.productoPedidos.each { ProductoPedido productoPedido ->
			acumulado = acumulado + productoPedido.cantidad * productoPedido.producto.precioUnitario;
		}
		
		if (descuento != null){
			acumulado = acumulado - acumulado * descuento.porcentaje
		}

		return acumulado
	}
}
